fotechfandomcom_es-20200214-history
Módulo:Flagg
local p = {} function p.main(frame) function emp2nil(x) if x "" then return nil else return x end end function space2emp(x) if string.find(x,"^%s*$") then return "" else return x end end function nopx(x) if x~=nil and (string.find(x,"^%d+$") or string.find(x,"^%d+px$")) then return string.gsub(x,"^(.*)px","%1") else return nil end end --Get input arguments local args = require('Module:Arguments').getArgs(frame) --Country & mode parameters local mode = string.lower(args1 or "usc") local mi = string.sub(mode,1,1) local ms = string.sub(mode,2,2) local mn = string.sub(mode,3,3) local me = string.sub(mode,4,-1) local country = args2 or "" local avar = args"avar" or args"altvar" local clink = args"clink" or args"link" --Get country data & altvar data local data, alink, amap, asuf if avar then local age = args"age" or "" local aalias amap, aalias = require("Module:Flagg/Altvar data").alttable(age) avar = string.gsub(string.lower(avar or ""),"[ \-]","") avar = aaliasavar or avar if not amapavar then error("Unknown avar") end local apar = {altvar=amapavar.altvar;mw=amapavar.mw;age=amapavar.age;variant=args"variant" or args3} data = require("Module:CountryData").gettable(frame,country,apar) asuf = amapavar.altlink alink = dataalias-"..amap[avar.altvar] or (clink or dataalias" or data.alias or country).." "..asuf else data = require("Module:CountryData").gettable(frame,country,{variant=args"variant" or args3}) avar = "" amap = {""={altvar=""}} end --Name and link parameters clink = clink or data.alias or country local pref = args"pref" local suff = args"suff" or asuf if not pref and not suff --Default prefix then pref = "Flag of" end local yn_map = {""=0; "0"=0; "no"=0; "n"=0; "1"=1; "yes"=1; "y"=1} local fthe = (args"pthe" and yn_map[args"pthe"]~=0) or (args"the" and yn_map[args"the"]~=0) local nthe = (args"nthe" and yn_map[args"nthe"]~=0) or (args"the" and yn_map[args"the"]~=0) fthe = fthe and (pref and "t" or "T").."he " or "" nthe = nthe and (pref and "t" or "T").."he " or "" local flink = args"plink" or args"flink" or alink or space2emp((pref or "").." ")..fthe..clink..space2emp(" "..(suff or "")) local name = args"name" if string.find(me,"e") then local cname = dataalias-"..amap[avar.altvar] or dataalias" or data.alias or country if mn "f" then name = name or space2emp((pref or "").." ")..nthe..cname..space2emp(" "..(suff or "")) else name = name or cname end else if mn "f" then name = name or space2emp((pref or "").." ")..nthe..country..space2emp(" "..(suff or "")) else name = name or country end end --Image parameters local pimage = frame:getParent().args"image" or frame.args"image" local placeholder = "Flag placeholder.svg" local variant = args"variant" or args3 or "" local image_map = {""=placeholder; "none"=placeholder; "blank"=placeholder} if pimage then --Remove namespace pimage = string.gsub(pimage,"^FfIiLlEe:(.*)$","%1") pimage = string.gsub(pimage,"^IiMmAaGgEe:(.*)$","%1") end local iname = image_mappimage or pimage local size = args"size" or args"sz" local size_map = {xs="12x8px"; s="17x11px"; m="23x15px"; l="32x21px"; xl="46x30px"} if size nil or string.find(size,"^%d*x?%d+px$") then --valid EIS size (..px, x..px or ..x..px), or unset elseif string.find(size,"^%d*x?%d+$") then size=size.."px" --EIS size without "px" suffix else size = size_mapsize or nil end local border = frame:getParent().args"border" or frame.args"border" if iname then size = size or "23x15px" if yn_mapborder 0 then border = "" else border = "|border" end else iname = dataalias-"..amap[avar.altvar.."-"..variant] or dataalias-"..variant or dataalias-"..amap[avar.altvar] or dataalias" or placeholder size = size or emp2nil(data.size) or "23x15px" if border then if yn_mapborder 0 then border = "" else border = "|border" end else if data"border-"..variant or data["border-"..amapavar.altvar] or data.border then border = "" else border = "|border" end end end local am = "" if args"alt" or string.find(me,"a") then am = args"alt" or args"name" or country am = am.."|"..am end --Build display name local text = args"text" if not text then if mn "x" --no text then text = "" elseif mn "p" or mn "f" --prefix/suffix link then text = ""..name.."" elseif mn "b" --both prefix/suffix and normal country link then if pref and suff then text = ""..pref.." "..nthe..""..name.." "..suff.."" elseif pref then text = ""..pref.." "..nthe..""..name.."" elseif suff then text = nthe..""..name.." "..suff.."" else text = nthe..""..name.."" end elseif mn "d" --data template then --check if redirect if require('Module:Redirect').luaIsRedirect("Template:Country data "..country) then text = "data "..country):fullUrl("redirect=no").." "..name.."" else text = ""..name.."" end elseif mn "u" --unlinked then text = name else --country link (default) text = ""..name.."" end end --Build image local ilink = args"ilink" if not ilink then if mi "x" or (iname placeholder and pimage~=placeholder) --no image/invisible image then iname = placeholder border = "" ilink = "|link=" am = "" elseif mi "i" --image page link then ilink = "" elseif mi "c" --country link then ilink = "|link="..clink elseif mi "p" or mi "f" --prefix/suffix link then ilink = "|link="..flink elseif mi "d" --data template then --check if redirect if require('Module:Redirect').luaIsRedirect("Template:Country data "..country) then ilink = "|link="..mw.title.new("Template:Country data "..country):fullUrl("redirect=no") else ilink = "|link=Template:Country data "..country end else --unlinked (default) ilink = "|link=" end end local image = " " --Combine image and name with separator local align = args"align" or args"al" local nalign = args"nalign" or args"nal" local align_map = {left="left", l="left", center="center", centre="center", c="center", middle="center", m="center", right="right", r="right"} local out if string.find(me,"r") then --image right of name if ms "x" and mi "x" --name only then out = text elseif ms "x" --no separator then out = text..""..image.."" elseif ms "n" --non-breaking space then out = text.." "..image.."" elseif ms "l" --line break then out = text.." "..image.."" elseif ms "t" --table cell then out = "style=\"text-align:"..(align_mapnalign or "left").."\"|"..text.."||style=\"text-align:"..(align_mapalign or "center")..";\"|"..image.."" else --fixed-width span box (default) local width = args"width" or args"w" or require("Module:Flaglist/size").luawidth(size) out = text..""..image.."" end else --image left of name if ms "x" and mi "x" --name only then out = text elseif ms "x" --no separator then out = ""..image..""..text elseif ms "n" --non-breaking space then out = ""..image.." "..text elseif ms "l" --line break then out = ""..image.." "..text elseif ms "t" --table cell then out = "style=\"text-align:"..(align_mapalign or "center")..";\"|"..image.."||style=\"text-align:"..(align_mapnalign or "left").."\"|"..text else --fixed-width span box (default) local width = nopx(args"width" or args"w") or require("Module:Flaglist/size").luawidth(size) out = ""..image..""..text end end if string.find(me,"w") --avoid wrapping then out = ""..out.."" end --Tracking categories local cat = "" if pimage and not image_mappimage and country~="" and dataalias" and not args.demo then cat = "Category:Pages using Flagg with specified image instead of data template image" end return out..cat end return p